<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- Copyright © 1987-2023 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation.  A copy of
the license is included in the
section entitled "GNU Free Documentation License".

This manual contains no Invariant Sections.  The Front-Cover Texts are
(a) (see below), and the Back-Cover Texts are (b) (see below).

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<title>Search Path (The C Preprocessor)</title>

<meta name="description" content="Search Path (The C Preprocessor)">
<meta name="keywords" content="Search Path (The C Preprocessor)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">

<link href="index.html" rel="start" title="Top">
<link href="Index-of-Directives.html" rel="index" title="Index of Directives">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Header-Files.html" rel="up" title="Header Files">
<link href="Once_002dOnly-Headers.html" rel="next" title="Once-Only Headers">
<link href="Include-Operation.html" rel="prev" title="Include Operation">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
div.example {margin-left: 3.2em}
span:hover a.copiable-link {visibility: visible}
-->
</style>


</head>

<body lang="en">
<div class="section-level-extent" id="Search-Path">
<div class="nav-panel">
<p>
Next: <a href="Once_002dOnly-Headers.html" accesskey="n" rel="next">Once-Only Headers</a>, Previous: <a href="Include-Operation.html" accesskey="p" rel="prev">Include Operation</a>, Up: <a href="Header-Files.html" accesskey="u" rel="up">Header Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h3 class="section" id="Search-Path-1"><span>2.3 Search Path<a class="copiable-link" href="#Search-Path-1"> &para;</a></span></h3>

<p>By default, the preprocessor looks for header files included by the quote
form of the directive <code class="code">#include&nbsp;&quot;<var class="var">file</var>&quot;<!-- /@w --></code> first relative to
the directory of the current file, and then in a preconfigured list 
of standard system directories.  
For example, if <samp class="file">/usr/include/sys/stat.h</samp> contains
<code class="code">#include&nbsp;&quot;types.h&quot;<!-- /@w --></code>, GCC looks for <samp class="file">types.h</samp> first in
<samp class="file">/usr/include/sys</samp>, then in its usual search path.
</p>
<p>For the angle-bracket form <code class="code">#include&nbsp;&lt;<var class="var">file</var>&gt;<!-- /@w --></code>, the
preprocessor&rsquo;s default behavior is to look only in the standard system
directories.  The exact search directory list depends on the target
system, how GCC is configured, and where it is installed.  You can
find the default search directory list for your version of CPP by
invoking it with the <samp class="option">-v</samp> option.  For example,
</p>
<div class="example smallexample">
<pre class="example-preformatted">cpp -v /dev/null -o /dev/null
</pre></div>

<p>There are a number of command-line options you can use to add
additional directories to the search path.  
The most commonly-used option is <samp class="option">-I<var class="var">dir</var></samp>, which causes 
<var class="var">dir</var> to be searched after the current directory (for the quote 
form of the directive) and ahead of the standard system directories.
You can specify multiple <samp class="option">-I</samp> options on the command line, 
in which case the directories are searched in left-to-right order.
</p>
<p>If you need separate control over the search paths for the quote and 
angle-bracket forms of the &lsquo;<samp class="samp">#include</samp>&rsquo; directive, you can use the
<samp class="option">-iquote</samp> and/or <samp class="option">-isystem</samp> options instead of <samp class="option">-I</samp>.
See <a class="xref" href="Invocation.html">Invocation</a>, for a detailed description of these options, as 
well as others that are less generally useful.
</p>
<p>If you specify other options on the command line, such as <samp class="option">-I</samp>,
that affect where the preprocessor searches for header files, the
directory list printed by the <samp class="option">-v</samp> option reflects the actual
search path used by the preprocessor.
</p>
<p>Note that you can also prevent the preprocessor from searching any of
the default system header directories with the <samp class="option">-nostdinc</samp>
option.  This is useful when you are compiling an operating system
kernel or some other program that does not use the standard C library
facilities, or the standard C library itself.
</p>
</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Once_002dOnly-Headers.html">Once-Only Headers</a>, Previous: <a href="Include-Operation.html">Include Operation</a>, Up: <a href="Header-Files.html">Header Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
